Concurrent systems have traditionally been difficult to program and use. For instance, parallel processes require concurrent program cooperation protocols to operate “perfectly”. If a program in the concurrent system fails to perfectly execute a concurrent program cooperation protocol, a system failure will result. Thus concurrent programming systems are very brittle. This is especially problematic when executing untrusted third party programs which have not been carefully written and tested. Thus, a need exists for a safety mechanism to prevent system failures in concurrent programming environments.
Another problem is that concurrent programming is limited by traditional application programming models. Specifically, traditional application programming models like Graphics Device Interface (GDI+) have a presentation layer based on a fundamental and limiting assumption: namely, that there will only be one user, one keyboard, one mouse and one logical screen. Thus, these models can only run one program at a time. A need therefore exists for an application programming model that supports displays that multiple computers can share, multiple input devices, and environments with devices interacting with the system and then leaving the system without undue effort. Thus, a concurrent application programming model to write applications for a changing environment is needed.
Finally, concurrent programming models and non-concurrent programming models have failed to enable applications to be highly responsive to user input in tasks with high latency. Specifically, traditional models have used traditional controller structure application models. More specifically, traditional models use group models and controllers into one engine and a view engine into the User Interface (UI) engine. However, this separation limits the responsiveness of the application because there is no synchronization between what a user inputs and what feedback he/she receives. This is particularly a problem with relatively complex tasks that incur high latency. Thus, a need exists for a highly responsive application model which presents the user with responsive feedback from relatively high latency tasks.